diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
index d73daf5..b577141 100644
--- a/drivers/reset/Kconfig
+++ b/drivers/reset/Kconfig
@@ -206,4 +206,10 @@
 	  passing request via Xilinx firmware interface to TF-A and PMU
 	  firmware.
 
+config RESET_DRA7
+	bool "Support for TI's DRA7 Reset driver"
+	depends on DM_RESET
+	help
+	  Support for TI DRA7-RESET subsystem. Basic Assert/Deassert
+	  is supported.
 endmenu
diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
index d69486b..97e3a78 100644
--- a/drivers/reset/Makefile
+++ b/drivers/reset/Makefile
@@ -30,3 +30,4 @@
 obj-$(CONFIG_RESET_RASPBERRYPI) += reset-raspberrypi.o
 obj-$(CONFIG_RESET_SCMI) += reset-scmi.o
 obj-$(CONFIG_RESET_ZYNQMP) += reset-zynqmp.o
+obj-$(CONFIG_RESET_DRA7) += reset-dra7.o
diff --git a/drivers/reset/reset-dra7.c b/drivers/reset/reset-dra7.c
new file mode 100644
index 0000000..585f832
--- /dev/null
+++ b/drivers/reset/reset-dra7.c
@@ -0,0 +1,97 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Texas Instruments DRA7 reset driver
+ *
+ * Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com/
+ * Author: Keerthy <j-keerthy@ti.com>
+ */
+
+#include <asm/io.h>
+#include <common.h>
+#include <dm.h>
+#include <reset-uclass.h>
+#include <dm/device_compat.h>
+
+struct dra7_reset_priv {
+	u32 rstctrl;
+	u32 rstst;
+	u8 nreset;
+};
+
+static int dra7_reset_request(struct reset_ctl *reset_ctl)
+{
+	return 0;
+}
+
+static int dra7_reset_free(struct reset_ctl *reset_ctl)
+{
+	return 0;
+}
+
+static inline void dra7_reset_rmw(u32 addr, u32 value, u32 mask)
+{
+	writel(((readl(addr) & (~mask)) | (value & mask)), addr);
+}
+
+static int dra7_reset_deassert(struct reset_ctl *reset_ctl)
+{
+	struct dra7_reset_priv *priv = dev_get_priv(reset_ctl->dev);
+	int mask = 1 << reset_ctl->id;
+
+	if (reset_ctl->id < 0 || reset_ctl->id >= priv->nreset)
+		return -EINVAL;
+
+	dra7_reset_rmw(priv->rstctrl, 0x0, mask);
+
+	while ((readl(priv->rstst) & mask) != mask)
+		;
+
+	return 0;
+}
+
+static int dra7_reset_assert(struct reset_ctl *reset_ctl)
+{
+	struct dra7_reset_priv *priv = dev_get_priv(reset_ctl->dev);
+	int mask = 1 << reset_ctl->id;
+
+	if (reset_ctl->id < 0 || reset_ctl->id >= priv->nreset)
+		return -EINVAL;
+
+	dra7_reset_rmw(priv->rstctrl, mask, 0x0);
+
+	return 0;
+}
+
+struct reset_ops dra7_reset_ops = {
+	.request = dra7_reset_request,
+	.rfree = dra7_reset_free,
+	.rst_assert = dra7_reset_assert,
+	.rst_deassert = dra7_reset_deassert,
+};
+
+static const struct udevice_id dra7_reset_ids[] = {
+	{ .compatible = "ti,dra7-reset" },
+	{ }
+};
+
+static int dra7_reset_probe(struct udevice *dev)
+{
+	struct dra7_reset_priv *priv = dev_get_priv(dev);
+
+	priv->rstctrl = dev_read_addr(dev);
+	priv->rstst = priv->rstctrl + 0x4;
+	priv->nreset = dev_read_u32_default(dev, "ti,nresets", 1);
+
+	dev_info(dev, "dra7-reset successfully probed %s\n", dev->name);
+
+	return 0;
+}
+
+U_BOOT_DRIVER(dra7_reset) = {
+	.name = "dra7_reset",
+	.id = UCLASS_RESET,
+	.of_match = dra7_reset_ids,
+	.probe = dra7_reset_probe,
+	.ops = &dra7_reset_ops,
+	.priv_auto = sizeof(struct dra7_reset_priv),
+};
